1
Идентичность против значения: Понимание л-значений и р-значений
AI037Lesson 7
00:00

В C++ каждое выражение приводит к либо л-значению либо р-значению. Это различие определяет, ссылается ли выражение на идентичность объекта идентичность (где он находится) или его значение (что он содержит).

1. Идентичность против содержимого

Объект л-значению (локаторное значение) представляет объект с постоянным адресом в памяти. Представьте себе его как помеченный ящик в ОЗУ. Напротив, р-значению (значение для чтения) является временным; оно представляет временное результат или литерал, у которого нет доступного программисту адреса.

КонтейнерЛ-значениеАдрес: 0x7FFEДанныеР-значениеЗначение: 42Преобразование

2. Функциональные переходы

Хотя л-значение может выступать как р-значение (компилятор просто извлекает значение внутри коробки), обратное запрещено. Вы не можете использовать р-значение там, где требуется л-значение — например, вы не можете взять адрес литерального числа, такого как &42 потому что у него отсутствует постоянная идентичность.

$$ \text{Л-значение} \xrightarrow{\text{Преобразование}} \text{Р-значение} \quad (\text{Разрешено}) $$

$$ \text{Р-значение} \xrightarrow{\text{Присваивание}} \text{Л-значение} \quad (\text{Запрещено}) $$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>